package com.javatest2;

/**
 * @author LL
 * 如果字符串 s 中的字符循环移动任意位置之后能够得到另一个字符串 t，那么 s 就被称为 t 的回
 * 环变位（circular rotation）。例如，ACTGACG 就是 TGACGAC 的一个回环变位，反之亦然。判定这
 * 个条件在基因组序列的研究中是很重要的。编写一个程序检查两个给定的字符串 s 和 t 是否互为
 * 回环变位。提示：答案只需要一行用到 indexOf()、length() 和字符串连接的代码。
 * @create 2021-01-14 16:54
 */
public class Subject5 {

    //方法一：
    public static boolean test1(String a,String b){
        if (a.length() != b.length()){
            return false;
        }
        int length = a.length();
        for (int i = 1; i < length; i++) {
            String left = a.substring(0,i);
            String right = a.substring(i,length);
            if ( (right+left).equals(b)) {
                return true;
            }
        }
        return false;
    }

    //方法二：
    public static boolean test2(String a,String b){
        if (a.length() != b.length()){
            return false;
        }
        for (int i = 0,len = b.length(); i < len; i++) {
            if(a.equals(b)){
                return true;
            }
            a = a.substring(1)+a.charAt(0);
        }
        return false;
    }

    //方法三
    public static boolean test3(String a,String b){
        return (a.length() == b.length()) && ((b + b).indexOf(a) >= 0);
    }

    //方法四
    public static boolean test4(String a,String b){
        return (a.length() == b.length()) && ((b+b).contains(b));
    }

    //方法五
    public static int test5(int target){
        int[] dp = new int[target+1];
        dp[0] = 1;
        dp[1] = 1;
        for(int i = 2; i < target+1; i++){
            dp[i] = 0;
            for(int j = 0; j < i; j++){
                System.out.println(dp[j]);
                dp[i] += dp[j];
                System.out.println(dp[i]);
                System.out.println("------------");
            }
            System.out.println("*************");
        }
        return dp[target];
    }

    public static void main(String[] args) {
       /* String a = "ABCDEFGHIJK";
        String b = "CDEFGHIJKAB"; //CDEFABCDEFAB
        System.out.println(test4(a,b));
        System.out.println((b+b).indexOf(a));

        String c = "123456789";
        String d = "567894321";
        System.out.println(test4(c,d));*/
        int i = test5(2);
        System.out.println("共有："+i+"种方法");


    }


}
